import type {
  FieldForm,
  FieldQuery,
  FieldVO,
  SceneForm,
  SceneQuery,
  SceneVO,
} from './model';

import type { ID, IDS, PageResult } from '#/api/common';

import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';

/**
 * 分页查询字段列表
 * @param params
 * @returns 字段列表
 */
export function fieldPage(params?: FieldQuery) {
  return requestClient.get<PageResult<FieldVO>>(
    '/search/field/queryPageFieldList',
    { params },
  );
}

/**
 * 查询字段列表
 * @param params
 * @returns 字段列表
 */
export function fieldList(params?: FieldQuery) {
  return requestClient.get<FieldVO[]>('/search/field/list', {
    params,
  });
}

/**
 * 导出字段列表
 * @param params
 * @returns 字段列表
 */
export function fieldExport(params?: FieldQuery) {
  return commonExport('/search/field/export', params ?? {});
}

/**
 * 查询字段详情
 * @param id id
 * @returns 字段详情
 */
export function fieldInfo(id: ID) {
  return requestClient.get<FieldVO>(`/search/field/${id}`);
}

/**
 * 新增字段
 * @param data
 * @returns void
 */
export function fieldAdd(data: FieldForm) {
  return requestClient.postWithMsg<void>('/search/field', data);
}

/**
 * 更新字段
 * @param data
 * @returns void
 */
export function fieldUpdate(data: FieldForm) {
  return requestClient.putWithMsg<void>('/search/field', data);
}

/**
 * 更新字段状态
 * @param data
 * @returns void
 */
export function fieldUpdateStatus(data: FieldForm) {
  const requestData = {
    id: data.id,
    status: data.status,
  };
  return requestClient.putWithMsg<void>(
    `/search/field/changeStatus`,
    requestData,
  );
}

/**
 * 删除字段
 * @param id id
 * @returns void
 */
export function fieldRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/search/field/${id}`);
}

/**
 * 分页查询查询场景列表
 * @param params
 * @returns 查询场景列表
 */
export function scenePage(params?: SceneQuery) {
  return requestClient.get<PageResult<SceneVO>>('/search/scene/page', {
    params,
  });
}

/**
 * 查询查询场景列表
 * @param params
 * @returns 查询场景列表
 */
export function sceneList(params?: SceneQuery) {
  return requestClient.get<SceneVO[]>('/search/scene/list', {
    params,
  });
}

/**
 * 导出查询场景列表
 * @param params
 * @returns 查询场景列表
 */
export function sceneExport(params?: SceneQuery) {
  return commonExport('/search/scene/export', params ?? {});
}

/**
 * 查询查询场景详情
 * @param id id
 * @returns 查询场景详情
 */
export function sceneInfo(id: ID) {
  return requestClient.get<SceneVO>(`/search/scene/${id}`);
}

/**
 * 新增查询场景
 * @param data
 * @returns void
 */
export function sceneAdd(data: SceneForm) {
  return requestClient.postWithMsg<void>('/search/scene', data);
}

/**
 * 更新查询场景
 * @param data
 * @returns void
 */
export function sceneUpdate(data: SceneForm) {
  return requestClient.putWithMsg<void>('/search/scene', data);
}

/**
 * 更新查询场景状态
 * @param data
 * @returns void
 */
export function sceneUpdateStatus(data: SceneForm) {
  return requestClient.putWithMsg<void>(`/search/scene/changeStatus`, data);
}

/**
 * 删除查询场景
 * @param id id
 * @returns void
 */
export function sceneRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/search/scene/${id}`);
}
